package com.mvc.controller;

import hbm.Region;
import hbm.RegionDAO;

import java.io.IOException;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.hibernate.Session;
import org.hibernate.Transaction;

public class RegionController extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	@SuppressWarnings("unchecked")
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String opcion = request.getParameter("opcion");

		if (opcion != null && opcion.equals("elimina")) {
			String boton = request.getParameter("boton");
			if (boton == null) {
				List<Region> listaRegiones = new RegionDAO().findAll();
				request.getSession().setAttribute("listadoRegiones",
						listaRegiones);
				response.sendRedirect("./jsp/eliminarRegion.jsp");
			} else {
				String idRegion = request.getParameter("idRegion");
				Region region = new Region();
				region.setId(Integer.parseInt(idRegion));
				Session session = new RegionDAO().getSession();
				Transaction tx = session.beginTransaction();
				Object findAAgain = session.merge(region);
				session.delete(findAAgain);
				tx.commit();
				session.close();
				response.sendRedirect("./jsp/mantenimientoRegion.jsp");
			}
		}

		if (opcion != null && opcion.equals("region")) {
			String boton = request.getParameter("boton");
			if (boton != null && boton.equals("Guardar")) {

				String nombreRegion = request.getParameter("txtnombre");

				Region region = new Region(nombreRegion, null);

				Session session = new RegionDAO().getSession();

				Transaction tx = session.beginTransaction();
				session.saveOrUpdate(region);
				tx.commit();
				session.close();
				List<Region> listaRegiones = new RegionDAO().findAll();
				request.getSession().setAttribute("listadoRegiones",
						listaRegiones);
				response.sendRedirect("./jsp/mantenimientoRegion.jsp");
			}
		}

		if (opcion != null && opcion.equals("consulta")) {
			Session session = new RegionDAO().getSession();
			List<Region> listaRegiones = new RegionDAO().findAll();
			request.getSession().setAttribute("listaRegiones", listaRegiones);
			session.close();
			response.sendRedirect("./jsp/mantenimientoRegion.jsp");
		}

		if (opcion != null && opcion.equals("edita")) {
			String boton = request.getParameter("boton");
			if (boton == null) {
				List<Region> listaRegiones = new RegionDAO().findAll();
				request.getSession().setAttribute("listadoRegiones",
						listaRegiones);
				response.sendRedirect("./jsp/seleccionRegion.jsp");
			}
		}

		if (opcion != null && opcion.equals("filtrar")) {
			Integer idRegion = Integer.parseInt(request
					.getParameter("idRegion"));
			Region regionSeleccionada = new RegionDAO().findById(idRegion);
			request.getSession().setAttribute("idRegionSeleccionado",
					regionSeleccionada.getId());
			request.getSession().setAttribute("nombreRegionSeleccionada",
					regionSeleccionada.getNombre());

			response.sendRedirect("./jsp/editarRegion.jsp");
		}

		if (opcion != null && opcion.equals("editando")) {
			String boton = request.getParameter("boton");
			if (boton != null && boton.equals("Editar")) {
				Integer idRegion = Integer.parseInt(request
						.getParameter("idRegion"));
				String nombreRegion = request.getParameter("txtnombre");
				Region regionSeleccionada = new RegionDAO().findById(idRegion);
				regionSeleccionada.setNombre(nombreRegion);
				Session session = new RegionDAO().getSession();

				Transaction tx = session.beginTransaction();
				session.saveOrUpdate(regionSeleccionada);
				tx.commit();
				session.close();
				List<Region> listaRegiones = new RegionDAO().findAll();
				request.getSession().setAttribute("listadoRegiones",
						listaRegiones);
				response.sendRedirect("./jsp/mantenimientoRegion.jsp");
			}
		}

	}

}
